package net.yla.smartbus.module.ba.vehicle.service;

import net.yla.smartbus.core.base.PageBean;
import net.yla.smartbus.module.ba.vehicle.common.ExcelData;
import net.yla.smartbus.module.ba.vehicle.dto.VehicleDto;
import net.yla.smartbus.module.ba.vehicle.form.VehicleForm;
import net.yla.smartbus.module.ba.vehicle.query.VehicleDeleteQuery;
import net.yla.smartbus.module.ba.vehicle.query.VehicleQuery;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.text.ParseException;
import java.util.List;

/**
 * @author 默苍离
 * @date 2021/6/17 16:57
 * <p>
 * ******************************************
 * @annotation:
 */
public interface VehicleService {

    /**
     * 根据 查询条件 查询 所有 车辆
     *
     * @param query
     * @return
     */
    List<VehicleDto> getList(VehicleQuery query);


    /**
     * 根据 查询条件 查询 所有 车辆的数量
     *
     * @param query
     * @return
     */
    Integer getCount(VehicleQuery query);


    /**
     * 根据id查询车辆
     *
     * @param vehicleId
     * @return
     */
    VehicleDto getOne(Integer vehicleId);


    /**
     * 根据 查询条件 分页查询 所有 车辆
     *
     * @param query
     * @return
     */
    PageBean<VehicleDto> getListByPage(VehicleQuery query);


    /**
     * 删除车辆
     *
     * @param ids
     * @return
     */
    Integer delete(VehicleDeleteQuery ids);


    /**
     * 导出车辆
     *
     * @param query
     * @return
     */
    ExcelData exportVehicles(VehicleQuery query);


    /**
     * 新增车辆
     *
     * @param form
     * @return
     */
    Integer insert(VehicleForm form);


    /**
     * 通过 导入文件 新增车辆  (文件导入)
     *
     * @param file
     * @return
     * @throws IOException
     * @throws ParseException
     */
    Integer insertByImport(MultipartFile file) throws IOException, ParseException;


    /**
     * 更新车辆信息
     *
     * @param vehicle
     * @return
     */
    Integer update(VehicleForm vehicle);

}
